﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////


#pragma once
#include <string>
#include <map>

namespace gcmp
{
    class IJournalUiObject;

    /// \brief 日志Ui回放者，派生并通过IJournalUiRecorderAndReplayerCreator注册到日志中可以定制Ui回放行为
    ///
    /// Ui回放是指对指定的控件和一些参数信息进行解析，根据解析的结果执行操作，
    /// 解析和执行操作均由Ui回放者完成
    class IJournalUiReplayer
    {
    public:
        /// 析构函数
        virtual ~IJournalUiReplayer(void) {}
        /// \brief 回放，对指定的控件和参数信息进行解析，并执行操作
        ///
        /// 由框架进行调用，调用时机由IJournalUiRecorderAndReplayerCreator控制，详情见IJournalUiRecorderAndReplayerCreator
        /// 如果需要发送事件，事件需要setAccepted(false)
        /// \param[in] pIUiObject 需要回放的Ui层控件数据
        /// \param[in] eventType 需要回放的Ui层事件类型
        /// \param[in] journalParameter 回放需要用到的参数
        /// \return 运行结果，true:成功;false:失败
        virtual bool Replay(IJournalUiObject *pIUiObject, std::wstring eventType, const std::map<std::wstring, std::wstring> &journalParameters) = 0;
    };
}
